package edu.cuit.avatar;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Scanner;

/**
 * 使用字符输入流(Reader)读取文本文件
 * @author <a href="mailto:1020zhaodan@163.com">Adan</a>
 * @version 1.0
 * @date 2025/7/11 15:40
 */
public class ReadData {
    public static void readByFileReader(File file){
        try(Reader input = new FileReader(file)){
           //读取一个字符,返回该字符的低16位的int表示,读到文件的结尾返回-1  input.read()
           int len = -1;
           char[] buff = new char[10];
           //将文件中的内容(字符)读取到缓冲数组buff中;返回的是读取的字符的长度,如果读到文件的结尾返回-1
           while((len = input.read(buff)) != -1)
               System.out.print(new String(buff, 0, len));
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        File file = new File("peppa.txt");
        readByScanner(file);
    }

    public static void readByScanner(File file){
        /*
         * Scanner: 标记读取
         *      默认的分隔符为空格
         */
        try(var input = new Scanner(file)){
            while(input.hasNext()){
                //设置scanner的分隔符为回车换行
                input.useDelimiter("\r\n");
                String next = input.next(); //nextInt()
                System.out.println(next);
            }
        } catch (IOException e){
            e.printStackTrace();
        }
    }
}
